package com.witmore.skyline.web.utils;

import java.util.HashSet;
import java.util.Set;

public class ListDifferenceCalculator {

    /**
     * 计算两个列表之间的差异，返回需要新增和删除的元素列表。
     *
     * @param newIds 新的ID列表
     * @param oldIds 旧的ID列表
     * @return ListDiffResult 包含需要添加和删除的列表
     */
    public static Set<Long> calculateDiffL(Set<Long> newIds, Set<Long> oldIds) {
        // 使用Set提高查找效率
        Set<Long> newSet = new HashSet<>(newIds);
        Set<Long> oldSet = new HashSet<>(oldIds);

        // 多余的元素
        Set<Long> toAdd = new HashSet<>();
        for (Long id : newSet) {
            if (!oldSet.contains(id)) {
                toAdd.add(id);
            }
        }
        return toAdd;
    }
    /**
     * 计算两个列表之间的差异，返回需要新增和删除的元素列表。
     *
     * @param newIds 新的ID列表
     * @param oldIds 旧的ID列表
     * @return ListDiffResult 包含需要添加和删除的列表
     */
    public static Set<Integer> calculateDiffI(Set<Integer> newIds, Set<Integer> oldIds) {
        // 使用Set提高查找效率
        Set<Integer> newSet = new HashSet<>(newIds);
        Set<Integer> oldSet = new HashSet<>(oldIds);

        // 多余的元素
        Set<Integer> toAdd = new HashSet<>();
        for (Integer id : newSet) {
            if (!oldSet.contains(id)) {
                toAdd.add(id);
            }
        }
        return toAdd;
    }

    // 示例主方法
    public static void main(String[] args) {
        Set<Long> newIds = new HashSet<>();
        newIds.add(1L);
        newIds.add(2L);
        newIds.add(3L);
        newIds.add(4L);

        Set<Long> olds = new HashSet<>();
        olds.add(3L);
        olds.add(4L);
        olds.add(6L);

        ListDifferenceCalculator.calculateDiffL(newIds, olds);

        System.out.println("需要新增的ID列表: " + ListDifferenceCalculator.calculateDiffL(newIds, olds));
        System.out.println("需要删除的ID列表: " + ListDifferenceCalculator.calculateDiffL(olds, newIds));
    }
}